package com.m1.tzolkin.model.temples;

import java.io.Serializable;

import com.m1.tzolkin.model.ObservableModel;
import com.m1.tzolkin.model.Season;
import com.m1.tzolkin.model.board.ITZBoard;
import com.m1.tzolkin.model.exceptions.StepMoveException;
import com.m1.tzolkin.model.players.ITZPlayer;
import com.m1.tzolkin.model.util.zone.IStepsZonesManager;

/**
 * Un mod�le de gestionnaire de temples.
 * Le gestionnaire associe � chaque temple une position pour
 *  chaque joueur pr�c�demment enregistr�.
 *
 * @cons <pre>
 * $DESC$
 *     Un gestionnaire de temples sans joueurs. </pre>
 */
public interface ITemplesManager extends IStepsZonesManager<ITemple, ITZPlayer>, ObservableModel, Serializable {
	
	// COMMANDES
	
	/**
	 * Applique les effets de chaque temple pour la saison s.
	 * @pre <pre>
	 *     s != null </pre>
	 */
	void activeTemples(ITZBoard b, Season s);
	
	/**
	 * Monte le joueur p dans le temple t si c'est possible.
	 * L�ve une exception si p veut atteindre la derni�re marche mais
	 *  qu'elle est d�j� occup�e.
	 */
	@Override
	void up(ITemple t, ITZPlayer p) throws StepMoveException;
	
}
